﻿using System;

using Lt.Engine.Sampling;
using RayDen.Library.Components.Color;
using RayDen.Library.Components.Surface;
using RayDen.Library.Core;
using RayDen.Library.Core.Primitives;

namespace Lt.Engine.Library
{
    public class LambertMaterial : BaseBsdf
    {
        public override BrdfType Type
        {
            get { return BrdfType.Diffuse ; }
        }

        public override IRadianceEvaluation Sample(ref Vector wo, ref IRadianceEvaluation radiance, float u0, float u1, float u2,
            out BsdfSample result, BrdfType flags = BrdfType.All)
        {
            result = new BsdfSample()
            {
                
            }; 
            throw new NotImplementedException();
        }

        public override IRadianceEvaluation Evaluate(LtScene aScene, ref Vector aWorldDirGen, float oCosThetaGen, out float oDirectPdfW,
            out float oReversePdfW)
        {
            throw new NotImplementedException();
        }

        public override float Pdf(LtScene aScene, ref Vector aWorldDirGen, bool aEvalRevPdf = false)
        {
            return MathLab.INVPI;
        }
    }
}
